package com.siashan.toolkit.api.security.util.encrypt;

import cn.hutool.crypto.CryptoException;

/**
 * 接口加密算法
 *
 * @author Small
 * @since  V1.0.1
 **/
public enum EncryptType {
    /**
     * DES加密算法
     */
    DES(true),
    /**
     * AES加密算法
     */
    AES(true),

    /**
     * 3DES加密算法
     */
    DES3(true);


    /**
     * 是否需要加密key
     */
    private boolean needKey;


    EncryptType(boolean needKey) {
        this.needKey = needKey;
    }

    public boolean isNeedKey() {
        return needKey;
    }


    /**
     * 加密算法枚举映射
     *
     * @param type   加密算法
     * @return       加密算法枚举值
     */
    public static EncryptType parseEncryptType(String type) {
        try {
            return EncryptType.valueOf(type);
        } catch (Exception e) {
            throw new CryptoException(String.format("Invalid encryptType: %s", type));
        }
    }
}
